const vscode = require('vscode');
function registerExplainCodeCommand(context, chatViewProvider) {
    let explainCodeCommand = vscode.commands.registerCommand('gptdemo.explainCode', async () => {
        const editor = vscode.window.activeTextEditor;
        if (!editor) {
            vscode.window.showInformationMessage('请先打开一个文件');
            return;
        }

        // 获取选中的文本或整个文件内容
        let text = '';
        if (editor.selection.isEmpty) {
            // 如果没有选中文本，则获取整个文件内容
            const document = editor.document;
            text = document.getText();
        } else {
            // 获取选中的文本
            text = editor.document.getText(editor.selection);
        }

        // 确保有内容要解释
        if (!text.trim()) {
            vscode.window.showInformationMessage('没有可以解释的代码');
            return;
        }

        // 显示聊天视图
        await vscode.commands.executeCommand('qwenChatView.focus');

        // 获取当前文件的语言类型
        const language = editor.document.languageId;

        // 构建消息对象
        const messageObj = {
            text: `解释以下代码：\n\`\`\`${language}\n${text}\n\`\`\``,
            model: "qwen-coder-plus-latest"
        };
     
        // ... existing code ...
    if (chatViewProvider._view) {
    try {
        // 发送消息到 Webview
         chatViewProvider._view.webview.postMessage({
            command: 'sendMsg',
            text: messageObj.text,
        }); 
    } catch (error) {
        vscode.window.showErrorMessage('解释代码失败：' + error.message);
    }
}
// ... existing code ...
        // 发送消息到 webview
      
    });

    context.subscriptions.push(explainCodeCommand);
}

module.exports = registerExplainCodeCommand;